package top.lishuoboy.fastjson.bean;

import cn.hutool.core.date.DatePattern;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.time.Instant;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author 李硕 2018年6月25日 上午11:14:54
 */
@Data
public class School {
    /** 指定字段的别名。 */
    @JSONField(name = "a0alias")
    private String alias;
    /** 指定不序列化字段 */
    @JSONField(serialize = false)
    private String a0NotSerializable;
    /** 指定排序字段 */
    @JSONField(ordinal = -1) //指定字段顺序,ordinal默认为0
    private String a0Sort1;
    /** 指定排序字段 */
    @JSONField(ordinal = -2) //指定字段顺序,ordinal默认为0
    private String a0Sort2;
    // 1.JSON数值(XML不区分类型：数值、字符串、布尔)
    private byte a11Byte;
    private short a12Short;
    private int a13Int;
    private long a14Long;
    private float a15Float;
    private double a16Double;

    // 2.JSON布尔(XML不区分类型：数值、字符串、布尔)
    private boolean a17Boolean;

    // 3.JSON字符串(XML不区分类型：数值、字符串、布尔)
    private char a18Char;
    // 3.1 java字符串转JSON字符串
    private String b1String;
    private StringBuffer b2StringBuffer;
    private StringBuilder b3StringBuilder;
    // 3.2 java日期转JSON字符串
    private Date c1Date;                            // 不指定日期格式,为json数值，时间戳
    @JSONField(format = DatePattern.NORM_DATETIME_MS_PATTERN)  //   指定日期格式,为json字符串
    private Date c1Date2;
    private Instant c2Instant;                      // 不指定日期格式,为json数值，时间戳
    @JSONField(format = DatePattern.NORM_DATETIME_MS_PATTERN)  //   指定日期格式,为json字符串，fastjson不支持
    private Instant c2Instant2;
    private LocalDateTime c3LocalDateTime;          // 不指定日期格式,为json数值，时间戳
    @JSONField(format = DatePattern.NORM_DATETIME_MS_PATTERN)  //   指定日期格式,为json字符串
    private LocalDateTime c3LocalDateTime2;

    // 4.JSON对象
    private Stu d1Stu;
    private Map d2Map;
    private final String nullObj = null;

    // 5.JSON数组
    private int[] e1IntArr;
    private String[] e2StrArr;
    private Stu[] e3StuArr;
    private List e4List;                    // XStream1.4友好支持，JABX2.3请指定泛型，否则xml很恶心
}